package com.bsoft.apiservice.dto;

import lombok.Data;

import java.util.Date;
import java.util.List;

@Data
public class LabRequisitionRequest {
    private MsgHeader msgHeader;
    private MsgBody msgBody;

    @Data
    public static class MsgHeader {
        private String organization;
        private String sender;
        private String serviceType;
        private String msgType;
        private String msgVersion;
        private String recordTitle;
        private String effectiveTime;
        private String source;
    }

    @Data
    public static class MsgBody {
        private Patient patient;
        private Visit visit;
        private LabRequest labRequest;

        @Data
        public static class Patient {
            private String sourcePatientId;
            private String sourcePatientIdType;
            private String authorOrganization;
            private String idCard;
            private String idCardCode;
            private String name;
            private String sex;
            private String birthDate;
            private String patientPhone;
            private String crowdType;
            private String subCrowdType;
            private String healthInsuranceCardId;
            private String address;
            private String patientProperties;
        }

        @Data
        public static class Visit {
            private String visitId;
            private String visitOrganization;
            private String patientType;
            private String patientTypeName;
            private String medicalCardId;
            private String medicalCardType;
            private String patid;
            private String pataddress;
            private String inpdate;
            private String charge_typeno;
            private String clinicId;
            private String hospizationId;
            private String hospizationTimes;
        }

        @Data
        public static class LabRequest {
            private String requestId;
            private String requestDesc;
            private String requestStatus;
            private String effectiveTimeLow;
            private String effectiveTimeHigh;
            private String isNeonatus;
            private String age;
            private String monthAge;
            private String isEmergency;
            private String priorityName;
            private String dept;
            private String deptName;
            private String wardArea;
            private String wardAreaName;
            private String sickbedId;
            private String sickRoomId;
            private String sickbedNo;
            private String sickRoomNo;
            private String requestDateTime;
            private String requestDoctorSign;
            private String requestDoctor;
            private String requestDoctorName;
            private String requestDept;
            private String requestDeptName;
            private String requestCheckTime;
            private String requestCheckerId;
            private String requestCheckerName;
            private String chiefComplaint;
            private String diseasesHistory;
            private String physicalSign;
            private String refLabResult;
            private String remarkInfo;
            private String toponymyID;
            private List<Diagnoses> diagnoses;
            private List<Items> items;



            @Data
            public static class Diagnoses {
                private Diagnose diagnose;
            }

            @Data
            public static class Items {
                private Item item;
            }

            @Data
            public static class Diagnose {
                private String diagnoseTypeCode;
                private String diagnoseTypeName;
                private Date diagnoseDateTime;
                private String diagnoseCode;
                private String diagnoseName;
            }

            @Data
            public static class Item {
                private String sampleNo;
                private String itemCode;
                private String itemName;
                private String sampleTypeCode;
                private String sampleTypeName;
                private String itemPrice;
                private String itemCount;
                private String itemCost;
                private String feeStatus;
                private String invoiceNo;
                private String orderId;
                private String examExecuteTime;
                private String examExecuteDept;
                private String examExecuteDeptName;
                private String examMethodCode;
                private String examMethodName;
                private String requestNote;
                private String costFreeSign;
            }
        }
    }
}